package com.liuweiheng.cloudproviderpayment8002.mq.helloWorld;

import com.liuweiheng.cloudproviderpayment8002.util.LogUtil;
import com.liuweiheng.cloudproviderpayment8002.util.RabbitMQUtil;
import com.rabbitmq.client.*;

import java.io.IOException;

/**
 * 消费者
 *
 * @author lwh
 */
public class Consumer {


    /**
     * 测试消费信息
     */
    public static void main(String[] args) {

        Connection connection = null;
        Channel channel = null;
        try {

            connection = RabbitMQUtil.getConnection();

            // 获取连接中的通道
            channel = connection.createChannel();
            /*
             * 通道绑定对应消息队列
             * 参数1：queue 队列名称，若队列不存在，会自动创建
             * 参数2：durable 是否持久化队列，若为false，则会在RabbitMQ关闭时删除当前队列
             * 参数3：exclusive 是否独占队列，即只能在当前连接使用该队列
             * 参数4：autoDelete 是否在消费完后自动删除队列
             * 参数5：额外附加参数
             */
            channel.queueDeclare("hello", true, false, false, null);

            /*
             * 消费信息
             * 参数1：queue 队列名称
             * 参数2：autoAck 是否开启消息自动确认机制
             * 参数3：Consumer 消费时的回调接口
             */
            channel.basicConsume("hello", true, new DefaultConsumer(channel) {
                @Override
                public void handleDelivery(String consumerTag, Envelope envelope, AMQP.BasicProperties properties, byte[] body) throws IOException {
                    System.out.println(new String(body));
                }
            });

        } catch (IOException e) {
            LogUtil.error("获取RabbitMQ连接错误");
            e.printStackTrace();
        }

    }


}
